<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    
</body>
<script>
    // ASCII   => GB2312  GBK   =>  unicode  => UTF-8

    // 关系运算符的隐式类型转换   >  >=   <  <=   ==   !=
    // 1.  字符串,布尔值 在和数字比较时 会先隐式的转化为数字 再比较
    // 2.  字符串 和  字符串 比较时, 按照顺序 比较字符的ASCII码 大小
    // 3.  null和undefined  遇到  >  >=   <  <=  会先转数字再比较
    //                      遇到  ==   !=  不转化 直接比较 (没有可比性)
    // 4.  null和undefined  在数值上是相等的(==)
    // 5.  NaN和任何值都不相等


    // console.log(5 > 3);

    // (1)
    // console.log("5" > 3); // "5" => 5  > 3    true
    // console.log(true > 3); // true => 1  > 3  false
    // console.log(1 == true); // true => 1 == 1
    // console.log(2 == true); // true => 1 == 2 

    // (2)
    // console.log("15" > "3");  // "1" => 49   "3" => 51  => 49 > 51 => false
    // console.log("15" > "13"); // "5" => 53   "3" => 51  => 53 > 51 => true 
    // console.log("5" > "a"); // "5" => 53   "a" =>  97  => 53 > 97 => false 

    // (3)
    // console.log(null >= 0);   // null => 0 >= 0  true
    // console.log(undefined >= 0);   // undefined => NaN >= 0  false

    // console.log(null == 0);   // null 不转化  没有可比性  => false
    // console.log(undefined == 0);

    // (4)
    // var a = null;
    // var b; // undefined
    console.log(null == undefined);
    console.log(null == null);
    console.log(undefined == undefined);

    // var a,b;
    // console.log(a == b);

    // (5)
    // console.log(NaN > 0);
    // console.log(NaN < 0);
    // console.log(NaN == 0);
    // console.log(NaN == NaN);
</script>
</html>